/**
 * index.js - 首页登录逻辑
 * 功能：处理用户登录、表单验证、界面切换
 */

/**
 * 页面加载完成后的初始化函数
 */
document.addEventListener('DOMContentLoaded', function () {
    // 初始化页面状态
    initPage();

    // 绑定登录表单提交事件
    bindLoginEvent();
});

/**
 * 初始化页面状态
 * 检查是否已登录，如果已登录则直接显示主内容
 */
function initPage() {
    // 检查sessionStorage中是否有登录标记
    const isLoggedIn = sessionStorage.getItem('isLoggedIn');

    if (isLoggedIn === 'true') {
        // 已登录，显示主内容区域
        showMainContent();
    } else {
        // 未登录，显示登录表单
        showLoginForm();
    }
}

/**
 * 显示登录表单，隐藏主内容
 */
function showLoginForm() {
    document.getElementById('loginSection').style.display = 'flex';  // 使用flex保持居中
    document.getElementById('mainContent').style.display = 'none';
}

/**
 * 显示主内容，隐藏登录表单
 */
function showMainContent() {
    document.getElementById('loginSection').style.display = 'none';
    document.getElementById('mainContent').style.display = 'block';
}

/**
 * 绑定登录表单提交事件
 */
function bindLoginEvent() {
    const loginForm = document.getElementById('loginForm');
    const loginBtn = document.getElementById('loginBtn');

    // 监听表单提交事件
    loginForm.addEventListener('submit', function (e) {
        e.preventDefault(); // 阻止表单默认提交行为
        handleLogin();
    });

    // 监听登录按钮点击事件（备用）
    loginBtn.addEventListener('click', function (e) {
        e.preventDefault();
        handleLogin();
    });
}

/**
 * 处理登录逻辑
 * 1. 获取表单数据
 * 2. 表单验证
 * 3. 调用登录接口
 * 4. 处理登录结果
 */
async function handleLogin() {
    // 获取表单元素
    const loginNameInput = document.getElementById('loginName');
    const passwordInput = document.getElementById('password');
    const statusDiv = document.getElementById('loginStatus');
    const loginBtn = document.getElementById('loginBtn');

    // 获取输入值并去除前后空格
    const loginName = loginNameInput.value.trim();
    const password = passwordInput.value.trim();

    // 表单验证
    if (!loginName) {
        showLoginStatus('请输入登录名', 'error');
        loginNameInput.focus();
        return;
    }

    if (!password) {
        showLoginStatus('请输入密码', 'error');
        passwordInput.focus();
        return;
    }

    // 显示加载状态
    showLoginStatus('登录中...', 'loading');
    loginBtn.disabled = true;

    try {
        // 调用登录接口
        const response = await API.login({
            loginName: loginName,
            password: password
        });

        // 判断登录是否成功（根据后端返回的code字段）
        if (response.code === 200) {
            // 登录成功
            showLoginStatus('登录成功！正在跳转...', 'success');

            // 保存登录状态到sessionStorage
            sessionStorage.setItem('isLoggedIn', 'true');
            sessionStorage.setItem('loginName', loginName);

            // 延迟500ms后切换到主内容页面
            setTimeout(() => {
                showMainContent();
                // 清空表单
                loginForm.reset();
                statusDiv.textContent = '';
            }, 500);

        } else {
            // 登录失败
            const errorMsg = response.message || '登录失败，请检查账号密码';
            showLoginStatus(errorMsg, 'error');
            loginBtn.disabled = false;
        }

    } catch (error) {
        // 网络错误或其他异常
        console.error('登录请求失败:', error);
        showLoginStatus('网络错误，请稍后重试', 'error');
        loginBtn.disabled = false;
    }
}

/**
 * 显示登录状态信息
 * @param {string} message - 状态消息
 * @param {string} type - 状态类型: 'success' | 'error' | 'loading'
 */
function showLoginStatus(message, type) {
    const statusDiv = document.getElementById('loginStatus');
    statusDiv.textContent = message;

    // 移除所有状态类
    statusDiv.className = 'status';

    // 添加对应的状态类
    if (type) {
        statusDiv.classList.add(type);
    }
}

/**
 * 退出登录（预留功能，可在其他页面调用）
 */
function logout() {
    // 清除登录状态
    sessionStorage.removeItem('isLoggedIn');
    sessionStorage.removeItem('loginName');

    // 显示登录表单
    showLoginForm();
}